#pragma once
#include "nnse_support.h"

namespace SimpleGUI
{
	template <class T, class U> public ref class CreateProblemForm : public System::Windows::Forms::Form
	{
		// Constructor and Destructor
			public: CreateProblemForm(nnse::problem<T, U>^ p);
			protected: virtual ~CreateProblemForm();
		// Member Variables
			private: System::ComponentModel::Container ^components;
			private: System::Windows::Forms::Label^  number_of_training_examples_label;
			private: System::Windows::Forms::TextBox^  number_of_training_examples_textBox;
			private: System::Windows::Forms::Label^  number_of_testing_examples_label;
			private: System::Windows::Forms::TextBox^  number_of_testing_examples_textBox;
			private: System::Windows::Forms::Label^  number_of_inputs_label;
			private: System::Windows::Forms::TextBox^  number_of_inputs_textBox;
			private: System::Windows::Forms::Label^  number_of_targets_label;
			private: System::Windows::Forms::TextBox^  number_of_targets_textBox;
			private: System::Windows::Forms::Label^  wrap_input_label;
			private: System::Windows::Forms::TextBox^  wrap_input_textBox;
			private: System::Windows::Forms::Label^  wrap_target_label;
			private: System::Windows::Forms::TextBox^  wrap_target_textBox;
			private: System::Windows::Forms::Button^  ok_button;
			private: System::Windows::Forms::Button^  cancel_button;
			private: nnse::problem<T, U>^ parent;
		// GUI Functions
			private: System::Void number_of_training_examples_textBox_TextChanged(System::Object^  sender, System::EventArgs^  e);
			private: System::Void number_of_testing_examples_textBox_TextChanged(System::Object^  sender, System::EventArgs^  e);
			private: System::Void number_of_inputs_textBox_TextChanged(System::Object^  sender, System::EventArgs^  e);
			private: System::Void number_of_targets_textBox_TextChanged(System::Object^  sender, System::EventArgs^  e);
			private: System::Void wrap_input_textBox_TextChanged(System::Object^  sender, System::EventArgs^  e);
			private: System::Void wrap_target_textBox_TextChanged(System::Object^  sender, System::EventArgs^  e);
			private: System::Void ok_button_Click(System::Object^  sender, System::EventArgs^  e);
			private: System::Void cancel_button_Click(System::Object^  sender, System::EventArgs^  e);
#pragma region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		void InitializeComponent(void)
		{
			this->number_of_testing_examples_textBox = (gcnew System::Windows::Forms::TextBox());
			this->number_of_testing_examples_label = (gcnew System::Windows::Forms::Label());
			this->number_of_training_examples_textBox = (gcnew System::Windows::Forms::TextBox());
			this->number_of_training_examples_label = (gcnew System::Windows::Forms::Label());
			this->wrap_target_textBox = (gcnew System::Windows::Forms::TextBox());
			this->number_of_targets_textBox = (gcnew System::Windows::Forms::TextBox());
			this->wrap_input_textBox = (gcnew System::Windows::Forms::TextBox());
			this->number_of_inputs_textBox = (gcnew System::Windows::Forms::TextBox());
			this->wrap_target_label = (gcnew System::Windows::Forms::Label());
			this->number_of_targets_label = (gcnew System::Windows::Forms::Label());
			this->wrap_input_label = (gcnew System::Windows::Forms::Label());
			this->number_of_inputs_label = (gcnew System::Windows::Forms::Label());
			this->ok_button = (gcnew System::Windows::Forms::Button());
			this->cancel_button = (gcnew System::Windows::Forms::Button());
			this->SuspendLayout();
			// 
			// number_of_testing_examples_textBox
			// 
			this->number_of_testing_examples_textBox->Location = System::Drawing::Point(165, 42);
			this->number_of_testing_examples_textBox->Name = L"number_of_testing_examples_textBox";
			this->number_of_testing_examples_textBox->Size = System::Drawing::Size(86, 20);
			this->number_of_testing_examples_textBox->TabIndex = 34;
			this->number_of_testing_examples_textBox->TextChanged += gcnew System::EventHandler(this, &CreateProblemForm::number_of_testing_examples_textBox_TextChanged);
			// 
			// number_of_testing_examples_label
			// 
			this->number_of_testing_examples_label->AutoSize = true;
			this->number_of_testing_examples_label->Location = System::Drawing::Point(12, 45);
			this->number_of_testing_examples_label->Name = L"number_of_testing_examples_label";
			this->number_of_testing_examples_label->Size = System::Drawing::Size(145, 13);
			this->number_of_testing_examples_label->TabIndex = 33;
			this->number_of_testing_examples_label->Text = L"Number of Testing Examples:";
			// 
			// number_of_training_examples_textBox
			// 
			this->number_of_training_examples_textBox->Location = System::Drawing::Point(165, 9);
			this->number_of_training_examples_textBox->Name = L"number_of_training_examples_textBox";
			this->number_of_training_examples_textBox->Size = System::Drawing::Size(86, 20);
			this->number_of_training_examples_textBox->TabIndex = 32;
			this->number_of_training_examples_textBox->TextChanged += gcnew System::EventHandler(this, &CreateProblemForm::number_of_training_examples_textBox_TextChanged);
			// 
			// number_of_training_examples_label
			// 
			this->number_of_training_examples_label->AutoSize = true;
			this->number_of_training_examples_label->Location = System::Drawing::Point(12, 12);
			this->number_of_training_examples_label->Name = L"number_of_training_examples_label";
			this->number_of_training_examples_label->Size = System::Drawing::Size(148, 13);
			this->number_of_training_examples_label->TabIndex = 31;
			this->number_of_training_examples_label->Text = L"Number of Training Examples:";
			// 
			// wrap_target_textBox
			// 
			this->wrap_target_textBox->Location = System::Drawing::Point(165, 174);
			this->wrap_target_textBox->Name = L"wrap_target_textBox";
			this->wrap_target_textBox->Size = System::Drawing::Size(86, 20);
			this->wrap_target_textBox->TabIndex = 42;
			this->wrap_target_textBox->TextChanged += gcnew System::EventHandler(this, &CreateProblemForm::wrap_target_textBox_TextChanged);
			// 
			// number_of_targets_textBox
			// 
			this->number_of_targets_textBox->Location = System::Drawing::Point(165, 108);
			this->number_of_targets_textBox->Name = L"number_of_targets_textBox";
			this->number_of_targets_textBox->Size = System::Drawing::Size(86, 20);
			this->number_of_targets_textBox->TabIndex = 41;
			this->number_of_targets_textBox->TextChanged += gcnew System::EventHandler(this, &CreateProblemForm::number_of_targets_textBox_TextChanged);
			// 
			// wrap_input_textBox
			// 
			this->wrap_input_textBox->Location = System::Drawing::Point(165, 141);
			this->wrap_input_textBox->Name = L"wrap_input_textBox";
			this->wrap_input_textBox->Size = System::Drawing::Size(86, 20);
			this->wrap_input_textBox->TabIndex = 40;
			this->wrap_input_textBox->TextChanged += gcnew System::EventHandler(this, &CreateProblemForm::wrap_input_textBox_TextChanged);
			// 
			// number_of_inputs_textBox
			// 
			this->number_of_inputs_textBox->Location = System::Drawing::Point(165, 75);
			this->number_of_inputs_textBox->Name = L"number_of_inputs_textBox";
			this->number_of_inputs_textBox->Size = System::Drawing::Size(86, 20);
			this->number_of_inputs_textBox->TabIndex = 39;
			this->number_of_inputs_textBox->TextChanged += gcnew System::EventHandler(this, &CreateProblemForm::number_of_inputs_textBox_TextChanged);
			// 
			// wrap_target_label
			// 
			this->wrap_target_label->AutoSize = true;
			this->wrap_target_label->Location = System::Drawing::Point(12, 177);
			this->wrap_target_label->Name = L"wrap_target_label";
			this->wrap_target_label->Size = System::Drawing::Size(70, 13);
			this->wrap_target_label->TabIndex = 38;
			this->wrap_target_label->Text = L"Wrap Target:";
			// 
			// number_of_targets_label
			// 
			this->number_of_targets_label->AutoSize = true;
			this->number_of_targets_label->Location = System::Drawing::Point(12, 111);
			this->number_of_targets_label->Name = L"number_of_targets_label";
			this->number_of_targets_label->Size = System::Drawing::Size(98, 13);
			this->number_of_targets_label->TabIndex = 37;
			this->number_of_targets_label->Text = L"Number of Targets:";
			// 
			// wrap_input_label
			// 
			this->wrap_input_label->AutoSize = true;
			this->wrap_input_label->Location = System::Drawing::Point(12, 144);
			this->wrap_input_label->Name = L"wrap_input_label";
			this->wrap_input_label->Size = System::Drawing::Size(63, 13);
			this->wrap_input_label->TabIndex = 36;
			this->wrap_input_label->Text = L"Wrap Input:";
			// 
			// number_of_inputs_label
			// 
			this->number_of_inputs_label->AutoSize = true;
			this->number_of_inputs_label->Location = System::Drawing::Point(12, 78);
			this->number_of_inputs_label->Name = L"number_of_inputs_label";
			this->number_of_inputs_label->Size = System::Drawing::Size(91, 13);
			this->number_of_inputs_label->TabIndex = 35;
			this->number_of_inputs_label->Text = L"Number of Inputs:";
			// 
			// ok_button
			// 
			this->ok_button->DialogResult = System::Windows::Forms::DialogResult::OK;
			this->ok_button->Location = System::Drawing::Point(15, 209);
			this->ok_button->Name = L"ok_button";
			this->ok_button->Size = System::Drawing::Size(109, 23);
			this->ok_button->TabIndex = 43;
			this->ok_button->Text = L"OK";
			this->ok_button->UseVisualStyleBackColor = true;
			this->ok_button->Click += gcnew System::EventHandler(this, &CreateProblemForm::ok_button_Click);
			// 
			// cancel_button
			// 
			this->cancel_button->DialogResult = System::Windows::Forms::DialogResult::Cancel;
			this->cancel_button->Location = System::Drawing::Point(130, 209);
			this->cancel_button->Name = L"cancel_button";
			this->cancel_button->Size = System::Drawing::Size(121, 23);
			this->cancel_button->TabIndex = 44;
			this->cancel_button->Text = L"Cancel";
			this->cancel_button->UseVisualStyleBackColor = true;
			this->cancel_button->Click += gcnew System::EventHandler(this, &CreateProblemForm::cancel_button_Click);
			// 
			// CreateProblemForm
			// 
			this->AcceptButton = this->ok_button;
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->CancelButton = this->cancel_button;
			this->ClientSize = System::Drawing::Size(268, 244);
			this->Controls->Add(this->cancel_button);
			this->Controls->Add(this->ok_button);
			this->Controls->Add(this->wrap_target_textBox);
			this->Controls->Add(this->number_of_targets_textBox);
			this->Controls->Add(this->wrap_input_textBox);
			this->Controls->Add(this->number_of_inputs_textBox);
			this->Controls->Add(this->wrap_target_label);
			this->Controls->Add(this->number_of_targets_label);
			this->Controls->Add(this->wrap_input_label);
			this->Controls->Add(this->number_of_inputs_label);
			this->Controls->Add(this->number_of_testing_examples_textBox);
			this->Controls->Add(this->number_of_testing_examples_label);
			this->Controls->Add(this->number_of_training_examples_textBox);
			this->Controls->Add(this->number_of_training_examples_label);
			this->Name = L"CreateProblemForm";
			this->Text = L"Create Problem Form";
			this->ResumeLayout(false);
			this->PerformLayout();

		}
#pragma endregion
	};
}
